#include "Com_Util.h"

// 函数定义：延时指定的微秒数
void Delay_us(uint16_t count)
{
	// 1. 设置滴答定时器的重装载值
	SysTick->LOAD = 72 * count;

	// 2. 设置滴答定时器的时钟源是系统时钟
	SysTick->CTRL |= SysTick_CTRL_CLKSOURCE;
	// 3. 设置滴答定时器不开启中断
	SysTick->CTRL &= ~SysTick_CTRL_TICKINT;
	// 4. 滴答定时器开始计数
	SysTick->CTRL |= SysTick_CTRL_ENABLE;

	// 5. 循环：如果滴答定时器没有完成计数就一直循环； 循环条件: COUNTFLAG == 0
	while (((SysTick->CTRL & SysTick_CTRL_COUNTFLAG) == 0) && (SysTick->CTRL & SysTick_CTRL_ENABLE))
		;

	// 6. 滴答定时器停止计数
	SysTick->CTRL &= ~SysTick_CTRL_ENABLE;
}

// 函数定义：延时指定的毫秒数
void Delay_ms(uint16_t count)
{
	while (count--)
	{
		Delay_us(1000);
	}
}

// 函数定义：延时指定的秒数
void Delay_s(uint16_t count)
{
	while (count--)
	{
		Delay_ms(1000);
	}
}
